﻿<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UCCategory.ascx.cs" Inherits="A_controls_UCCategory" %>

<script type="text/javascript">
    var fun_uc_cat_add, fun_uc_cat_modified, fun_uc_cat_canceld;

    function uc_cat_init_buttons() {
        $('#uc_cat_addAera').hide();
        $('#uc_cat_saveAera').hide();

        $("input:text", "#dialog_category").removeAttr('readOnly');
    }

    function AddCategory(pid, onadded, oncanceld) {
        fun_uc_cat_add = fun_uc_cat_canceld = null;

        if (typeof (onadded) == "function") fun_uc_cat_add = onadded;
        if (typeof (oncanceld) == "function") fun_uc_cat_canceld = onadded;

        $('#uc_cat_tbName').val('');
        $('#uc_cat_tbOrder').val('');

        uc_cat_init_buttons();
        $('#uc_cat_addAera').show();
        $("#dialog_category").dialog({
            width: 450,
            height: 200,
            modal: true,
            resizable: false,
            title: "添加目录",
            zIndex: 101,
            close: function() {
                if (fun_uc_cat_canceld) {
                    fun_uc_cat_canceld.call(this);
                }
                fun_uc_cat_add = null;
                fun_uc_cat_canceld = null;
            }
        });

        //set Category
        var slt = $('#uc_cat_sltParent').empty().cascadeselect('clear', false);
        uc_init_category(pid, '#uc_cat_sltParent', '#dialog_category');
    }

    function ViewCategory(data) {
        if (!data) return;

        $('#tbCId').val(data.CategoryId);
        $('#uc_cat_tbName').val(data.CategoryName);
        $('#uc_cat_tbOrder').val(data.Order);

        uc_cat_init_buttons();
        $("#dialog_category").dialog({
            width: 450,
            height: 200,
            modal: true,
            resizable: false,
            title: "查看目录",
            zIndex: 101,
            close: function() {
                if (fun_uc_cat_canceld) {
                    fun_uc_cat_canceld.call(this);
                }
                fun_uc_cat_modified = null;
                fun_uc_cat_canceld = null;
            }
        });

        //set Category
        var slt = $('#uc_cat_sltParent').empty().cascadeselect('clear', false);
        uc_init_category(data.ParentCategoryId, '#uc_cat_sltParent', '#dialog_category', function() { $('#uc_cat_sltParent', '#dialog_category').cascadeselect('disable'); });

        $("input:text", "#dialog_category").attr('readOnly', 'readOnly');
    }

    function ModifyCategory(data, onmodified, oncanceld) {
        fun_uc_cat_modified = fun_uc_cat_canceld = null;
        if (!data || !data.CategoryId || data.ParentCategoryId == undefined || data.ParentCategoryId == null) {
            return;
        }

        if (typeof (onmodified) == "function") fun_uc_cat_modified = onmodified;
        if (typeof (oncanceld) == "function") fun_uc_cat_canceld = onadded;

        $('#tbCId').val(data.CategoryId);
        $('#uc_cat_tbName').val(data.CategoryName);
        $('#uc_cat_tbOrder').val(data.Order);

        uc_cat_init_buttons();
        $('#uc_cat_saveAera').show();
        $("#dialog_category").dialog({
            width: 450,
            height: 200,
            modal: true,
            resizable: false,
            title: "编辑目录",
            zIndex: 101,
            close: function() {
                if (fun_uc_cat_canceld) {
                    fun_uc_cat_canceld.call(this);
                }
                fun_uc_cat_modified = null;
                fun_uc_cat_canceld = null;
            }
        });

        //set Category
        var slt = $('#uc_cat_sltParent').empty().cascadeselect('clear', false);
        uc_init_category(data.ParentCategoryId, '#uc_cat_sltParent', '#dialog_category');
    }

    function BatchAddCategory(pid, onadded, oncanceld) {
        fun_uc_cat_add = fun_uc_cat_canceld = null;
        if (typeof (onadded) == "function") fun_uc_cat_add = onadded;
        if (typeof (oncanceld) == "function") fun_uc_cat_canceld = onadded;

        $('#uc_cat_bat_tbName').val('');

        $("#dialog_category_batchadd").dialog({
            width: 450,
            height: 340,
            modal: true,
            resizable: false,
            title: "批量添加目录",
            zIndex: 101,
            close: function() {
                if (fun_uc_cat_canceld) {
                    fun_uc_cat_canceld.call(this);
                }
                fun_uc_cat_add = null;
                fun_uc_cat_canceld = null;
            }
        });

        //set Category
        var slt = $('#uc_cat_bat_sltParent').empty().cascadeselect('clear', false);
        uc_init_category(pid, '#uc_cat_bat_sltParent', '#dialog_category_batchadd');
    }

    function DeleteCategory(arr, ondeleted, onerror) {
        fun_uc_cat_deleted = fun_uc_cat_error = null;
        if (!arr || arr.length < 1) {
            if (onerror && typeof (onerror) == 'function')
                onerror.call(this, "CategoryId 列表为空！");
            return; ;
        }
        var idStr = arr.join(',');
        $.ajax({ url: "ajax.aspx?action=deletecategoryies&categoryids=" + idStr,
            async: false,
            dataType: "json",
            type: 'GET',
            success: function(d) {
                d = eval(d);
                if (d.Result) {
                    if (ondeleted && typeof (ondeleted) == 'function')
                        ondeleted.call(this, d.Result);
                } else if (onerror && typeof (onerror) == 'function') {
                    onerror.call(this, d.Error);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                if (onerror && typeof (onerror) == 'function')
                    onerror.call(this, errorThrown);
            }
        });
    }

    function uc_cat_add() {
        var data = {};
        data.CategoryName = $('#uc_cat_tbName').val();
        data.ParentCategoryId = $('#uc_cat_sltParent').cascadeselect('getvalue');
        data.Order = $('#uc_cat_tbOrder').val();
        if (data.CategoryName == null || $.trim(data.CategoryName) == '') {
            alert('目录名不能为空。');
            return;
        }
        if (data.ParentCategoryId == null || isNaN(data.ParentCategoryId)) {
            alert('请选择所属目录。');
            return;
        }
        if (data.Order == null || isNaN(data.Order)) {
            alert('序号必须是数字或为空。');
            return;
        }

        $.ajax({
            url: "ajax.aspx?action=addcategory",
            async: false,
            dataType: "json",
            data: data,
            type: 'POST',
            beforeSend: function() {
                $('#dialog_category').masklayer('show', { zIndex: 102, Text: '正在保存，请稍候...' });
            },
            success: function(d) {
                d = eval(d);
                if (!d.Error) {
                    if (fun_uc_cat_add) {
                        fun_uc_cat_add.call(this, data);
                    }
                    fun_uc_cat_add = fun_uc_cat_canceld = null;
                    $("#dialog_category").dialog("close");
                } else {
                    alert('保存失败！错误信息：' + d.Error);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert('发送请求失败！错误信息：' + errorThrown);
            },
            complete: function() {
                $('#dialog_category').masklayer('hide');
            }
        });
    }

    function uc_cat_save() {
        var data = {};
        data.CategoryId = $('#tbCId').val();
        data.CategoryName = $('#uc_cat_tbName').val();
        data.ParentCategoryId = $('#uc_cat_sltParent').cascadeselect('getvalue');
        data.Order = $('#uc_cat_tbOrder').val();

        if (!data.CategoryId) {
            alert('无法获取CategoryId。');
            return;
        }
        //alert('还没有验证把自己作为父类的问题勒！');
        if (!data.CategoryName || $.trim(data.CategoryName) == '') {
            alert('目录名不能为空。');
            return;
        }
        if (!data.ParentCategoryId || isNaN(data.ParentCategoryId)) {
            alert('请选择所属目录。');
            return;
        }
        if (data.Order == null || isNaN(data.Order)) {
            alert('序号必须是数字或为空。');
            return;
        }

        $.ajax({
            url: "ajax.aspx?action=savecategory",
            async: false,
            dataType: "json",
            data: data,
            type: 'POST',
            beforeSend: function() {
                $('#dialog_category').masklayer('show', { zIndex: 102, Text: '正在保存，请稍候...' });
            },
            success: function(d) {
                d = eval(d);
                if (!d.Error) {
                    if (fun_uc_cat_modified) {
                        fun_uc_cat_modified.call(this, true, (!!d.Result ? eval(d.Result) : data));
                    }
                    fun_uc_cat_modified = fun_uc_cat_canceld = null;
                    $("#dialog_category").dialog("close");
                } else {
                    alert('保存失败！错误信息：' + d.Error);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert('发送请求失败！错误信息：' + errorThrown);
            },
            complete: function() {
                $('#dialog_category').masklayer('hide');
            }
        });
    }

    function uc_cat_bat_add() {
        var name, pid;
        name = $('#uc_cat_bat_tbName').val();
        pid = $('#uc_cat_bat_sltParent').cascadeselect('getvalue');

        if (name == null || $.trim(name) == '') {
            alert('目录名不能为空。');
            return;
        }
        if (pid == null || isNaN(pid)) {
            alert('请选择所属目录。');
            return;
        }

        $.ajax({
            url: "ajax.aspx?action=bataddcategory",
            async: false,
            dataType: "json",
            data: { 'name': name, 'pid': pid },
            type: 'POST',
            beforeSend: function() {
                $('#dialog_category_batchadd').masklayer('show', { zIndex: 102, Text: '正在保存，请稍候...' });
            },
            success: function(d) {
                d = eval(d);
                if (!d.Error) {
                    if (fun_uc_cat_add) {
                        fun_uc_cat_add.call(this, pid);
                    }
                    fun_uc_cat_add = fun_uc_cat_canceld = null;
                    $("#dialog_category_batchadd").dialog("close");
                } else {
                    alert('保存失败！错误信息：' + d.Error);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert('发送请求失败！错误信息：' + errorThrown);
            },
            complete: function() {
                $('#dialog_category_batchadd').masklayer('hide');
            }
        });
    }
    function uc_cat_bat_cancel() {
        if (fun_uc_cat_canceld) {
            fun_uc_cat_canceld.call(this);
        }
        fun_uc_cat_add = fun_uc_cat_modified = fun_uc_cat_canceld = null;
        $("#dialog_category_batchadd").dialog("close");
    }

    function uc_cat_cancel() {
        if (fun_uc_cat_canceld) {
            fun_uc_cat_canceld.call(this);
        }
        fun_uc_cat_add = fun_uc_cat_modified = fun_uc_cat_canceld = null;
        $("#dialog_category").dialog("close");
    }

    function uc_cat_init_category(categoryId, slt, container) {
        $.ajax({
            url: "ajax.aspx?action=getrecursiveparents&cid=" + categoryId,
            //async: false,
            dataType: "json",
            beforeSend: function() {
                $(container).masklayer('show', { zIndex: 102, Text: '正在获取目录...' });
            },
            success: function(data) {
                if (data.Result) {
                    data = eval(data.Result);
                    var hash = [];
                    while (data.length > 0) {
                        hash.push((data.shift()).CategoryId);
                    }
                    $.ajax({ url: "ajax.aspx?action=getcategories",
                        async: false,
                        dataType: "json",
                        success: function(data) {
                            if (data.Result) {
                                data = eval(data.Result);
                                if (hash) {
                                    var sid = hash.shift();
                                    if (!!sid) {
                                        var i = 0, len = data.length, str = '';
                                        while (i < len) {
                                            str += "<option value='" + data[i].CategoryId + "'";
                                            if (data[i].CategoryId == sid) {
                                                str += " selected='selected'";
                                            }
                                            str += ">" + data[i].CategoryName + "</options>";
                                            i++;
                                        }
                                        $(slt).append(str);
                                    } else {
                                        hash = null;
                                    }
                                    $(slt).cascadeselect({
                                        url: 'ajax.aspx?action=getcategories',
                                        key: 'pid',
                                        type: "GET",
                                        valuedatafield: 'CategoryId',
                                        textdatafield: 'CategoryName',
                                        selecteddatafield: 'S', //'Selected',
                                        unselectedoption: { value: '@', text: '请选择目录' },
                                        beforebinding: function() {
                                            $(container).masklayer('show', { zIndex: 102, Text: '正在获取目录...' });
                                        },
                                        ondatabinding: function(select, data) {
                                            if (data.Result) {
                                                data = data.Result;
                                                if (data.length == 0) {
                                                    $(select).remove();
                                                    hash = null;
                                                    return false;
                                                }
                                                if (hash) {
                                                    var sid = hash.shift();
                                                    if (!!sid) {
                                                        var i = 0, len = data.length;
                                                        while (i < len) {
                                                            if (data[i].CategoryId == sid) {
                                                                data[i].S = true;
                                                            }
                                                            i++;
                                                        }
                                                        if (i == len) {
                                                            hash = null;
                                                        }
                                                    } else {
                                                        hash = null;
                                                    }
                                                }
                                                return data;
                                            } else {
                                                return false;
                                            }
                                        },
                                        oncompleted: function() {
                                            if (!hash)
                                                $(container).masklayer('hide');
                                        }
                                    });
                                }
                            }
                        }
                    });
                }
            },
            complete: function() {
                $(container).masklayer('hide');
            }
        });
    }
</script>

<div id='dialog_category'>
    <input type="hidden" id="tbCId" />
    <table>
        <colgroup>
            <col width="100px;" />
            <col width="340px;" />
        </colgroup>
        <tr>
            <td>
                目录
            </td>
            <td>
                <input type="text" id="uc_cat_tbName" style="width: 320px;" />
            </td>
        </tr>
        <tr>
            <td>
                所属目录：
            </td>
            <td>
                <select id='uc_cat_sltParent'>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                序号：
            </td>
            <td>
                <input type="text" id="uc_cat_tbOrder" style="width: 40px;" />【从1开始，非正数时自动添加到最后】
            </td>
        </tr>
        <tr>
            <td colspan="2" style="text-align: right;">
                <div id="uc_cat_addAera">
                    <button onclick='uc_cat_add();'>
                        添 加</button>
                    <button onclick='uc_cat_cancel();'>
                        取 消</button>
                </div>
                <div id="uc_cat_saveAera">
                    <button onclick='uc_cat_save();'>
                        保 存</button>
                    <button onclick='uc_cat_cancel();'>
                        取 消</button>
                </div>
            </td>
        </tr>
    </table>
</div>
<div id='dialog_category_batchadd'>
    <table>
        <colgroup>
            <col width="100px" />
            <col width="340px" />
        </colgroup>
        <tr>
            <td>
                所属目录：
            </td>
            <td>
                <select id='uc_cat_bat_sltParent'>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                目录名称：
            </td>
            <td>
                <textarea id="uc_cat_bat_tbName" cols="40" rows="8"></textarea>
            </td>
        </tr>
        <tr>
            <td colspan="2" style="text-align: right;">
                <button onclick='uc_cat_bat_add();'>
                    添 加</button>
                <button onclick='uc_cat_bat_cancel();'>
                    取 消</button>
            </td>
        </tr>
    </table>
</div>
